package com.example.administrator.test.login;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import com.example.administrator.test.MainActivity;
import com.example.administrator.test.login.bean.TokenMatchSendBean;
import com.example.administrator.test.login.bean.TokenMatchTurnBean;
import com.google.gson.Gson;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.GsonConverterFactory;
import retrofit2.Response;
import retrofit2.Retrofit;

/**
 * 打开时的界面，不显示，用于判断登录时手机号码的状态
 */
public class JustActivity extends AppCompatActivity {
    private RecordSQLiteOpenHelper helper = new RecordSQLiteOpenHelper(this);
    private SQLiteDatabase db;
    private String token,phone;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //对数据库进行查询
        db=helper.getReadableDatabase();
        Cursor cursor = db.query("records", null, null, null, null, null, null);
        //如果数据库不为空
        if (cursor!=null&& cursor.moveToFirst()){
            //查询的到数据库里面的保留的登录密匙
            token = cursor.getString(cursor.getColumnIndex("token"));
            phone=cursor.getString(cursor.getColumnIndex("phone"));//查询出用户的手机号码
            //将数据传递给后台
            TokenMatchSendBean tokenMatchSendBean=new TokenMatchSendBean();
            tokenMatchSendBean=initTokenMatchSendBean(tokenMatchSendBean);
            //转化成json格式
            Gson gson=new Gson();
            String route=gson.toJson(tokenMatchSendBean);
            Retrofit retrofit=new Retrofit.Builder()
                    .baseUrl(Constant.BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            PostRoute postRoute=retrofit.create(PostRoute.class);
            RequestBody body=RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),route);
            Call<TokenMatchTurnBean> call=postRoute.getTurnToken(body);
            call.enqueue(new Callback<TokenMatchTurnBean>() {
                @Override
                public void onResponse(Call<TokenMatchTurnBean> call, Response<TokenMatchTurnBean> response) {
                    TokenMatchTurnBean tokenMatchTurnBean=response.body();
                    //得到新的登录密匙以及返回状态
                    String resultCode=tokenMatchTurnBean.getResultCode();
                    String newToken=tokenMatchTurnBean.getNewtoken();
                    //将数据库里面的信息清除掉，以便存储新的登录密匙（因一个用户只用存储一条数据。所以并不是改动）
                    db = helper.getWritableDatabase();
                    db.execSQL("delete from records");
                    db.close();
                    if ("0".equals(resultCode)){  //验证后台返回的密匙匹配信息
                          //匹配成功后，跳转到主界面
                        Intent intent=new Intent(JustActivity.this,MainActivity.class);
                        //将新的登录密匙以及用户的手机号码传递到mainActivity中，以便在MainActivity中进行存储
                        intent.putExtra("token",newToken);
                        intent.putExtra("phone",phone);
                        startActivity(intent);
                    }else {
                        Intent intent=new Intent(JustActivity.this,LoginActivity.class);
                        startActivity(intent);
                    }
                }

                @Override
                public void onFailure(Call<TokenMatchTurnBean> call, Throwable t) {

                }
            });
        }else {
            //如果没有相关的存储数据，跳转到登录页面
            Intent intent=new Intent(JustActivity.this,LoginActivity.class);
            startActivity(intent);
        }
    }

    private TokenMatchSendBean initTokenMatchSendBean(TokenMatchSendBean tokenMatchSendBean){
        tokenMatchSendBean.setOperType("2003");
        tokenMatchSendBean.setToken(token);
        return tokenMatchSendBean;
    }

    @Override
    protected void onStop() {
        super.onStop();
        finish();
    }
}
